/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package org.rainbow.xml;

import java.io.IOException;
import java.lang.annotation.Annotation;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import org.w3c.dom.Document;
import org.w3c.dom.Node;

/**
 *
 * @author hironaga
 */
abstract class XmlHandleComponent {

    abstract void writeElement(Annotation annotation, Method getter, Field field, Object obj,
            Document doc, String xpath, int index, Node parentElement, XmlHandleHelper helper)
                                                            throws IOException;

    abstract void readElement(Annotation annotation, Method setter, Field field, Object obj,
            Document doc, String xpath, Node parentElement, XmlHandleHelper helper)
            throws IOException, InstantiationException, IllegalAccessException;

    abstract void overwriteElement(Annotation annotation, Method getter, Field field, Object obj,
            Document doc, String xpath, int index, Node parentElement, XmlHandleHelper helper)
                                                            throws IOException;

}
